Method and apparatus for managing file system of unified storage system

ABSTRACT

The disclosure relates to a method and apparatus of managing a file system of a unified storage system. According to embodiments of the present disclosure, the method comprises: creating a thin provisioning storage pool in a block level; mapping the thin provisioning storage pool to a file storage pool in a file level; and creating a file system by using the file storage pool. In this way, a capacity of the file system is expanded or shrunk without rebalancing or migrating data in the storage system.

BACKGROUND

Embodiments of the present invention generally relate to a storage system and a method of managing its file system, and more specifically, to a unified storage system and a method of managing a file system of the unified storage system.

In a unified storage appliance, for Network Attached Storage (NAS) sub systems, a traditional way of creating a file system is to let end the user specify a set of volumes on which the file system data will be placed. However, many file systems grow rapidly, so it is possible that a new storage space needs to be added or allocated soon after creation of the system. There are some limitations and restrictions to add the storage space for known parallel file systems (such as GPFS). The storage space in a file system is divided into a plurality of storage pools, and when a storage pool is established and when the storage spaces are added later to an existing storage pool, the sizes of these storage spaces should be kept uniform.

SUMMARY

Generally, embodiments of the present invention propose a technical solution about managing a file system of a unified storage system.

According to one embodiment of the present invention, there is provided a method of managing a file system of a unified storage system, the unified storage system comprising a file level and a block level having a block-based physical storage space, the method comprising: creating a thin provisioning storage pool in the block level; mapping the thin provisioning storage pool to a file storage pool in the file level; and creating a file system by using the file storage pool.

According to another embodiment of the present invention, there is provided an apparatus of managing a file system of a unified storage system, the unified storage system comprising a file device and a block device having a block-based physical storage space, the apparatus comprising: a thin provisioning storage pool creating unit configured to create a thin provisioning storage pool in the block device; a mapping unit configured to map the thin provisioning storage pool to a file storage pool in the file device; and a file system creating unit configured to create a file system by using the file storage pool.

It will be appreciated through the depictions below that embodiments of the present invention may, according to mapping between thin provisioning storage pools forming the block level and the file storage pools of the file level, adjust the size of the thin previsioning storage pools to correspondingly control allocation of the size of the file system without performing rebalance or migration of the files and thereby ensure the system performance whilst reducing the cost. Other features and advantages of the present invention will be made more apparent through the following depictions.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

Through the more detailed description of some embodiments of the present disclosure in the accompanying drawings, the above and other objects, features and advantages of the present disclosure will become more apparent, wherein the same reference generally refers to the same components in the embodiments of the present disclosure.

FIG. 1 illustrates a block diagram of an exemplary computer system/server which is applicable to implement the embodiments of the present invention;

FIG. 2 illustrates a flow chart of a method for managing file systems of a unified storage system according to an embodiment that can implement the present invention;

FIG. 3 illustrates a block diagram of a unified storage system of an embodiment that can implement the present invention; and

FIG. 4 illustrates a block diagram of an apparatus for managing file systems of a unified storage system according to an embodiment of the present invention.

DETAILED DESCRIPTION

When working with a file system in a unified storage system, at times additional storage has to be added to the file system. After the storage is added, it is possible that the file system may need to be rebalanced to take advantage of the newly-added space. Rebalancing of files is an I/O intensive and time consuming operation, and it is very painful for a large file system. In a system sharing block storage and NAS storage, it is desirable to shrink the file system capacity by removing partial storage spaces in the unified storage system. When a certain storage space is removed from the file systems, a NAS controller needs to migrate data in the storage space. Data migration is also an I/O intensive and time consuming operation.

It is also impractical to allocate a single large-capacity storage space to the file system because in addition to a huge initial investment, the user only knows the size currently required by the file system, and does not plan or cannot predict the size that might be expanded in the future, so it is impossible to decide how much space should be allocated to them. Besides, the user might not be aware it is suitable to allocate how much storage space, and the amount of the storage space used by the file system will affect the performance of parallel file systems (e.g., a single storage device will become a bottleneck of parallel systems in respect of performance). Furthermore, once the single large-capacity storage space gets offline or malfunctions, an unbearable loss will be caused to the user.

It is hard to balance the storage allocation between a block part and a file part by an existing method, which causes waste of real storage space. This is especially disadvantageous in a multi-tenant environment where lots of tenants only consume a small fraction of their quotas. The embodiments disclosed herein generally address the above-described problems.

Some preferable embodiments will be described in more detail with reference to the accompanying drawings, in which the preferable embodiments of the present disclosure have been illustrated. However, the present disclosure can be implemented in various manners, and thus should not be construed to be limited to the embodiments disclosed herein. On the contrary, those embodiments are provided for the thorough and complete understanding of the present disclosure, and completely conveying the scope of the present disclosure to those skilled in the art.

Referring now to FIG. 1, in which an exemplary computer system/server 12 which is applicable to implement the embodiments of the present invention is shown. Computer system/server 12 is only illustrative and is not intended to suggest any limitation as to the scope of use or functionality of embodiments of the invention described herein.

As shown in FIG. 1, computer system/server 12 is shown in the form of a general-purpose computing device. The components of computer system/server 12 may include, but are not limited to, one or more processors or processing units 16, a system memory 28, and a bus 18 that couples various system components including system memory 28 to processor 16.

Bus 18 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus.

Computer system/server 12 typically includes a variety of computer system readable media. Such media may be any available media that is accessible by computer system/server 12, and it includes both volatile and non-volatile media, removable and non-removable media.

System memory 28 can include computer system readable media in the form of volatile memory, such as random access memory (RAM) 30 and/or cache memory 32. Computer system/server 12 may further include other removable/non-removable, volatile/non-volatile computer system storage media. By way of example only, storage system 34 can be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and typically called a “hard drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”), and an optical disk drive for reading from or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD-ROM or other optical media can be provided. In such instances, each can be connected to bus 18 by one or more data media interfaces. As will be further depicted and described below, system memory 28 may include at least one program product having a set (e.g., at least one) of program modules that are configured to carry out the functions of embodiments of the invention.

Program/utility 40, having a set (at least one) of program modules 42, may be stored in system memory 28 by way of example, and not limitation, as well as an operating system, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data or some combination thereof, may include an implementation of a networking environment. Program modules 42 generally carry out the functions and/or methodologies of embodiments of the invention as described herein.

Computer system/server 12 may also communicate with one or more external devices 14 such as a keyboard, a pointing device, a display 24, etc.; one or more devices that enable a user to interact with computer system/server 12; and/or any devices (e.g., network card, modem, etc.) that enable computer system/server 12 to communicate with one or more other computing devices. Such communication can occur via Input/Output (I/O) interfaces 22. Still yet, computer system/server 12 can communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via network adapter 20. As depicted, network adapter 20 communicates with the other components of computer system/server 12 via bus 18. It should be understood that although not shown, other hardware and/or software components could be used in conjunction with computer system/server 12. Examples, include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, redundant array of independent disks (RAID) systems, tape drives, and data archival storage systems, etc.

Embodiments of the present invention will be described in detail below. FIG. 2 illustrates a flow chart of a method 200 for managing file systems of a unified storage system according to an embodiment that can implement the present invention.

The technical term “unified storage system” refers to a storage system comprising a block-based storage manner and a file-based storage manner Specifically, the unified storage system may comprise file-based network attached storage (NAS) and block (data block)-based storage. Typically, the unified storage system forms a network and establishes a file system between the file-based storage and the block-based storage to allocate storage space of a certain quota to the user so that the user reads/writes data.

In an embodiment of the present disclosure of using the file system managing method 200, the unified storage system comprises a block level and a file level. The block level, as a front-end, may perform control data block of the system, and include at least one physical storage device such as hard disk drive (HDD) or solid state drive (SSD). In the block level of the unified storage system, the data is read/written in form of a block. The file level may perform control as a back-end file of the system, and a terminal user can have access to and read/write data stored in the file level in form of files.

At step S201, a thin provisioning storage pool is created in the block level. The allocated space of the thin provisioning storage pool may be larger than the physical storage space of the block level. When the thin provisioning storage pool is created to be larger than the physical storage space of the block level, the thin provisioning storage pool as a virtual storage space may allocate to the user a logical storage space which is much larger than an actually-possessed physical storage space. An advantage of so doing is that the user may allocate a fairly large logical storage space at an initial stage according to the planning, but actually use a small-capacity physical storage device; thereafter when the actually stored data almost fill the physical storage device full, the user is prompted to add a new physical storage device to reduce the initial investment cost and space utilization efficiency. Since the thin provisioning storage pool is created at the block level, so it also has a block-based storage manner.

It should be appreciated that the size of the thin provisioning storage pool may be manually allocated by an administrator of the unified storage system, or automatically allocated by the system according to preset rules. For example, the network storage space (e.g., network storage service, E-mailing service or the like) allocated to the terminal user can be automatically expanded (e.g., a total capacity of the occupied data reaches a certain proportion of the allocated space) or shrunk (e.g., an account is not logged in beyond a preset period of time) in response to the preset rules.

At step S202, the thin provisioning storage pool is mapped to a file storage pool of the file level. Being located at the file level, the file storage pool is also file-based. The file storage pool may be considered as an available space quota allocated to the terminal user, and its size is proportional to the size of the thin provisioning storage pool created by the administrator or automatically created by the system. Optionally, the size of the file storage pool is equal to the size of the thin provisioning storage pool. In other words, the capacity of the file-based file storage pool corresponds to the block-based thin provisioning storage pool and accords with a change of the thin provisioning storage pool.

In an embodiment of the present disclosure, similar to the block-based thin provisioning storage pool, the file-based file storage pool is also a virtual logical storage space. The terminal user can access the file storage pool and read/write the data in a file form in a certain logical space allocated thereto.

In an embodiment of the present disclosure, the thin provisioning storage pool is mapped to the file storage pool one to one. Specifically, each provisioning storage pool corresponds to one file storage pool. The file system needs a storage pool to decide what kind of file is placed in which pool, for example, frequently-accessed files are placed in a high-rate pool containing a solid state hard disk as the physical storage device according to the pre-defined rules. The mapping is illustrated now only by way of an example. The block level may create a thin provisioning storage pool, several volumes are created subsequently in the thin provisioning storage pool, and all volumes are added to the file storage pool of the file system to complete the mapping. “Volume” refers to a hard disk (volume) that can be seen by the file system and is accessed through iSCSI or FC (fiber channel). The file system finally needs to be read/written on the volumes.

It should be appreciated that the disclosure is not intended to limit the number of the thin provisioning storage pools or file storage pools. The number of the thin provisioning storage pools depends on creation of step S201, and it may include only one pool or a plurality of pools. However, after the thin provisioning storage pool is created, it is favorable to keep the number of the file storage pools consistent with the number of the thin provisioning storage pools.

At step S203, the file system is created accordingly by using the file storage file obtained from the mapping. The file system normally refers to a method and data structure for an operating system to clarify files in a certain logical space allocated, namely, a method of organizing files. In other words, the file system is created at the file level and directly accessed by the user to facilitate a graphic interface-based operation (e.g., reading/writing the stored data).

In an embodiment of the present disclosure, if the size of the file system is to be adjusted, adjustment may be only made to the size of the thin provisioning storage pool of the unified storage system, i.e., expand or shrink the thin provisioning storage pool created by the user at step S201 (or initial stage) to expand or shrink the size of the file system accordingly. By forming the mapping such that the thin provisioning storage pools correspond to the file storage pools one to one, the file system only performs storage management with the file storage pool in a file-based manner. Perform management for the thin provisioning storage pool and the mapping relationship is unnecessary. Hence, with the one-to-one mapping the user need not deal with complexity of storage management, namely, the managing of hard disk allocation in the storage file and the mapping relationship of these hard disks to the file storage pool. Control of the size of the file system may be completed at the block level and the file system need not be modified, and therefore, data migration does not occur. Since data stored in the physical storage device in the block level need not be rebalanced or migrated, the storage efficiency is improved. Furthermore, considering (a plurality of) file systems may be created in different manners (the file systems may be created as for example NTFS or FAT), the unified storage system using the embodiment of the present disclosure can achieve better balance between usability and performance of the storage management or file system management. Besides, it is favorable to keep the file storage pool consistent with the thin provisioning storage pool because according to the above statements, this may enable the change of the file system to be achieved only by the change to the thin provisioning storage pool without making any adjustment to data and the file system per se (e.g., the adjustment may comprise partitioning, migrating, deleting, rebalancing and the like).

In the embodiment of the present disclosure, when the data (the total amount of data written by the user) in the file system exceeds the pre-defined proportion of the block-based physical storage space, the file system managing method 200 may further comprise promoting the user to adding a new physical storage space. This is particularly favorable to creation of the thin provisioning storage pool that is much larger (e.g., several times) than the physical storage space of the physical storage device because as stated above, the unified storage system allocates an excessive logical storage space to the user, but most of users only use a very small portion of the logical storage space (for example, an account of network mailing service is usually allocated several GBs (the measure unit “B” of the storage capacity in this text denotes byte), but most of users only use several hundreds of MBs even less). However, only after the total amount of data stored by the user reaches a certain threshold of the physical storage capacity provided by the physical storage device of the block level does the unified storage system prompt the user to add a new physical storage device so as to expand the total physical storage capacity of the system and thereby to effectively reduce the cost of initial investment for the hardware. For example, the pre-defined proportion may be 90% of the current total physical storage space or capacity, and the pre-defined proportion may be pre-adjusted by the user (e.g., administrator). When the total amount of data stored by all users is less than the pre-defined proportion, the new physical storage device need not be added in response to the expansion of the thin provisioning storage pool.

In the embodiment of the present disclosure, when the user (e.g., administrator) shrinks the size of the thin provisioning storage pool to be less than the pre-defined threshold, the file system managing method 200 may further comprise prompting the user to delete data in the file system or refuse this shrinking request. The pre-defined threshold may be proportional to the amount of data in the file system (i.e., the total amount of data written by the user). In other words, the pre-defined threshold is not a fixed value, but a variable varying with the total amount of the written data. For example, the pre-defined threshold may be maintained as a proportion 110%, 120% or any proportion greater than or equal to 100% of the total amount of data.

Now only by way of example, the total amount of data stored by all users in the physical storage space of the physical storage device is 300 GB, and meanwhile the size of the created thin provisioning storage pool is 400 GB. If the user desires to shrink the size of the thin provisioning storage pool to shrink the size of the file system allocated to all terminal users, and it is assumed that the pre-defined threshold be 110% of the total amount of data, the user may shrink the size of the thin provisioning storage pool to 350 GB. However, at this time if the user desires to shrink the size of the thin provisioning storage pool to less than 330 GB, he/she is prompted to delete partial data in the file system or refuse this shrinking request. The pre-defined value may be pre-adjusted by the user.

It should be appreciated that the administrator in the text refers to a user who has a certain right, i.e., may create the thin provisioning storage pool and adjust the size of the thin provisioning storage pool. In other words, the administrator may be a terminal user that has a right to use the file system or an administrator of the system.

In the embodiment of the present disclosure, after step S201, namely, after creating the thin provisioning storage pool, the file system managing method 200 may further comprise creating a plurality storage volumes, e.g., named space-efficient storage volumes in the text herein, according to the thin provisioning storage pool for use in the mapping of step S202. A total capacity of a plurality of space-efficient storage volumes is equal to a maximum capacity of the thin provisioning storage pool. The maximum capacity of the thin provisioning storage pool refers to a maximum storage size of a block-based virtual logical storage space that is created under approval of the unified storage system. The number of the space-efficient storage volumes may be preset by the user due to different applications or automatically set by the unified storage system according to the preset rules (e.g., determined via a NAS device of the file level to ensure of desired level of parallelism). The size of each space-efficient storage volume may be obtained by dividing the maximum volume of the thin provisioning storage cell by the number of the set space-efficient storage volumes.

The space-efficient storage volumes are described only by way of example. Assume that a physical storage pool S_(A) is 1 TB, S_(B) is 1 TB, the user first may create at the block level two thin provisioning storage pools T_(A) and T_(B) of 500 GB each. It should be appreciated that the user may create any number of thin provisioning storage pools according to needs. Subsequently, the user may use the thin provisioning storage pools T_(A) and T_(B) to automatically create the file system, automatically create 32 (or anther number of) maximum-capacity space-efficient storage volumes V_(A) from S_(A) according to properties (e.g., the size of extend) of the thin provisioning storage pools, and add these V_(A)'s to the file storage pool F_(A). Meanwhile, the user may automatically create 32 (or, another number of) space-efficient storage volumes V_(B) from S_(B) and add them to the file storage pool F_(B). As the created thin provisioning storage pools T_(A) and T_(B) each are 500 GB, namely, 1 TB in total, when data exceeding 1 TB cannot be written in the file system, the system prompts failure to continue writing. However, since the actual physical space is 2 TB, the user may continue to write by only adjusting the size of the thin provisioning storage pools T_(A) and T_(B) (e.g., changing both of them to 2 TB, totally 4 TB). Thereafter, when the data exceeding 2 TB is written in the file system, the actual physical space is already written full, so the user needs to add a new physical storage device and adjust the thin provisioning storage pools to restore further writing.

In the above examples, the user users the space-efficient storage volumes to read/write file data, but the user need not perform management for a total of 64 space-efficient storage volumes (the sum of V_(A) and V_(B)) and only needs to manage the size of the logic of the two thin provisioning storage pools T_(A) and T_(B) to achieve allocation for the file system.

However, it should be appreciated that the above examples may have any number of physical storage pools, and any number of physical storage devices may be created in the storage pool. For example, the physical storage pool S_(A) may contain three storage devices of 500 GB, and S_(B) may not be created. Subsequently, the thin provisioning storage pools T_(A) and T_(B) are created from S_(A). However, the thin provisioning storage pools should be mapped one to one to the file storage pools, namely, T_(A)→F_(A), T_(B)→F_(B). In these mapping procedures, the user can only see the physical storage pool and the thin provisioning storage pools, and the space-efficient storage volumes (V_(A) and V_(B)) in the system are allocated and completed through the memory of the system.

Flexibility of storage may be provided by providing space-efficient storage volumes because as stated above, the data actually written by all users probably only occupy a very small portion of data allocated to them, and the maximum capacity that can be allocated is determined by the sum of the space-efficient storage volumes. In an embodiment of the present disclosure, the sum of the space-efficient storage volumes is equal to the maximum capacity of the thin provisioning storage pools created under approval, and the file data read/written by the user is placed on the space-efficient storage volumes. Therefore, once the file data is created, the position thereof on the space-efficient storage volumes is in a fixed correspondence relationship to the position on the physical storage pool, and the correspondence relationship is not affected by the expansion or shrinking of the thin provisioning storage pools. In other words, it does not require re-allocation of the position of the data stored in the physical storage pool in the form of blocks because the user changes the size of the file system.

FIG. 3 illustrates a block diagram of a unified storage system 300 of an embodiment that can implement the present invention. The unified storage system 300 comprises a block level 310 and a file level 320. In combination with the file system managing method 200 of FIG. 2, thin provisioning storage pools 311 in the block level 310 are created first. The block level 310 has a block-based physical storage space. In the present embodiment, as shown in FIG. 3, the number of thin provisioning storage pools 311 is two, and it might be favorable that the two thin provisioning storage pools 311 are created as having equal size.

The two thin provisioning storage pools 311 are mapped to two corresponding file storage pools 321 in the file level 320. Each file storage pool 321 is equal to its corresponding thin provisioning storage pool 311 in size, which is favorable for management of the file system because the user's reading/writing of the data may simultaneously correspond to the file storage pool in the file level and the thin provisioning storage pool in the block level and the physical storage space. The file system 322 is created by using two file storage pools 321 obtained from mapping. Since illustrative block diagram of FIG. 3 further expounds on the illustrative flow chart of FIG. 2 in structure, depictions of principle of FIG. 2 also apply to FIG. 3 and will not be detailed herein.

According to an embodiment of the present disclosure, the unified storage system 300 further comprises a controller 330 for various operations, e.g., mapping the thin provisioning storage pools to the file storage pools of the file level to use the file storage pools to create the file system. In an embodiment, the controller 330 may be configured to prompt the user to add a new physical storage space in the block level in response to data in the file system exceeding the pre-defined proportion of the block-based physical storage space. In another embodiment, the controller 330 may further be configured to prompt the user to delete data in the file system in response to the thin provisioning storage pool being shrunk as a pre-defined proportion of data in the file system. Besides, in other embodiments, the controller 330 may be further configured to create a plurality of space-efficient storage volumes for mapping according to the thin provisioning storage pools, and a total capacity of the plurality of the space-efficient storage volumes is equal to the maximum capacity of the thin provisioning storage pools. However, it should be appreciated that the controller 330 according to the present disclosure may be configured to execute various other operations for the unified storage system 300, such as read/write, deletion and migration of data.

FIG. 4 illustrates a block diagram of an apparatus 400 for managing a file system of a unified storage system according to an embodiment of the present invention. As stated above, the unified storage system comprises a file device and a block device having a block-based physical storage space.

According to an embodiment of the present disclosure, the apparatus 400 comprises a thin provisioning storage pool creating unit 410 configured to create a thin provisioning storage pool in the block device; a mapping unit 420 configured to map the thin provisioning storage pool to a file storage pool in the file device; and a file system creating unit 430 configured to use the file storage pool to create a file system.

In an embodiment, the apparatus 400 further comprises: a capacity change request receiving unit configured to receive a request to change a capacity of the file system; and a thin provisioning storage pool capacity changing unit configured to, in response to the request, change the capacity of the thin provisioning storage pool to change the capacity of the file system.

In an embodiment, the apparatus 400 further comprises a physical storage space addition prompting unit configured to prompt the user to add a new physical storage space in the block device in response to data in the file system exceeding the pre-defined proportion of the block-based physical storage space.

In an embodiment, the apparatus 400 further comprises a thin provisioning storage pool shrink prompting unit configured to execute at least one of the following in response to the thin provisioning storage pool being shrunk to be less than the pre-defined threshold: refusing the shrinking request; and prompting the user to delete the data in the file system. The pre-defined threshold is proportional to the amount of data in the file system.

In an embodiment, the apparatus 400 further comprises a space-efficient storage volume creating unit configured to, after creation of the thin provisioning storage pools, create a plurality of space-efficient storage volumes for mapping corresponding to the thin provisioning storage pools, wherein a total capacity of the plurality of the space-efficient storage volumes is equal to the maximum capacity of the thin provisioning storage pools.

It should be appreciated that for sake of clarity, FIG. 4 does not show optional unit or sub-units included by the apparatus 400. All features and operations as described above are respectively applicable to the apparatus 400 and will not be detailed here. Furthermore, division of units and sub-units of the apparatus 400 are not restrictive but exemplary and aims to logically describe their main functions or operations. A function of a unit may be implemented by a plurality of units, and a plurality of units may be implemented by one unit. The scope of the present invention is not limited in this aspect.

Furthermore, the units included by the apparatus 400 may be implemented in many manners, including software, hardware, firmware or any combinations thereof. For example, in some embodiments, the apparatus 400 may be implemented by using software and/or hardware. Alternatively or additionally, the apparatus 400 may be implemented partially or completely based on hardware. For example, one or more units of the apparatus 400 may be implemented as an integrated circuit (IC) chip, an application-specific integrated circuit (ASIC), system on chip (SOC), field programmable gate array (FPGA), or the like. The scope of the present invention is not limited in this aspect.

Through embodiments of the present disclosure, the unified storage system may achieve the following advantages. The file system management of the present disclosure may manage allocation of the storage space to achieve better balance of storage capacity usability and storage performance particularly in the case of using different file systems and storage properties. Besides, the file system management of the present disclosure performs automation adaption and control for storage management in the unified storage system, which facilitates the user directly managing its file system without considering how to configure a file system disk or volume (number, size, type, whether to mirror and how to minor and the like). In the level of use, embodiments of the present disclosure simplify use of the file level, e.g., use and operation of the NAS apparatus, by allocating “quotas” to the file storage pools. By controlling the thin provisioning storage pools to achieve the allocation of the file system, the file system management of the present disclosure may simply expand or shrink the file system without need to rebalance and migrate the already-stored data, which therefore does not exert an influence on input and output of the files and is very important for the performance of the system. Besides, the unified storage system and the file system management method according to the present disclosure can substantially improve storage efficiency between the file and the block, particularly for a multi-tenant environment because the physical storage space is shared between the block level and the file level and does not need the user's participation and operation.

The present invention may be a system, a method, and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that can retain and store instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire.

Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device.

Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Smalltalk, C++ or the like, and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The computer readable program instructions may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions.

These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein. 

What is claimed is:
 1. A method for managing a file system of a unified storage system, the unified storage system comprising a file level and a block level having a block-based physical storage space, the method comprising: creating a thin provisioning storage pool in the block level; mapping the thin provisioning storage pool to a file storage pool in the file level; and creating the file system by using the file storage pool.
 2. The method of claim 1, further comprising: receiving a request to change a capacity of the file system; and in response to the request, changing the capacity of the file system by changing a capacity of the thin provisioning storage pool.
 3. The method of claim 1, further comprising: prompting a user to add a new physical storage space in the block level in response to an amount of data in the file system exceeding a pre-defined proportion of the block-based physical storage space.
 4. The method of claim 1, further comprising, in response to the thin provisioning storage pool being shrunk to be less than a pre-defined threshold, performing at least one of the following: refusing a shrinking request; and prompting a user to delete data in the file system.
 5. The method of claim 1, further comprising creating a plurality of storage volumes for the mapping according to the thin provisioning storage pool.
 6. The method of claim 5, wherein a total capacity of the plurality of storage volumes is equal to a maximum capacity of the thin provisioning storage pool.
 7. An apparatus for managing a file system of a unified storage system, the unified storage system comprising a file device and a block device having a block-based physical storage space, the apparatus comprising: a thin provisioning storage pool creating unit configured to create a thin provisioning storage pool in the block device; a mapping unit configured to map the thin provisioning storage pool to a file storage pool in the file device; and a file system creating unit configured to create the file system by using the file storage pool.
 8. The apparatus of claim 7, further comprising: a capacity change request receiving unit configured to receive a request to change a capacity of the file system; and a thin provisioning storage pool capacity changing unit configured to change the capacity of the file system by changing a capacity of the thin provisioning storage pool in response to the request.
 9. The apparatus of claim 7, further comprising: a physical storage space addition prompting unit configured to prompt a user to add a new physical storage space in the block device in response to an amount of data in the file system exceeding a pre-defined proportion of the block-based physical storage space.
 10. The apparatus of claim 7, further comprising: a thin provisioning storage pool shrink prompting unit configured to perform at least one of the following in response to the thin provisioning storage pool being shrunk to be less than a pre-defined threshold: refusing a shrinking request; and prompting a user to delete data in the file system.
 11. The apparatus of claim 7, further comprising: a storage volume creating unit configured to create a plurality of storage volumes for the mapping according to the thin provisioning storage pool.
 12. The apparatus of claim 11, wherein a total capacity of the plurality of storage volumes is equal to a maximum capacity of the thin provisioning storage pool.
 13. A computer program product for managing a file system of a unified storage system, the unified storage system comprising a file level and a block level having a block-based physical storage space, the computer program product comprising: one or more computer readable storage media and program instructions stored on the one or more computer readable storage media, the program instructions comprising instructions for: creating a thin provisioning storage pool in the block level; mapping the thin provisioning storage pool to a file storage pool in the file level; and creating the file system by using the file storage pool.
 14. The computer program product of claim 13, wherein the program instructions comprise instructions for: receiving a request to change a capacity of the file system; and in response to the request, changing the capacity of the file system by changing a capacity of the thin provisioning storage pool.
 15. The computer program product of claim 13, wherein the program instructions comprise instructions for: prompting a user to add a new physical storage space in the block level in response to an amount of data in the file system exceeding a pre-defined proportion of the block-based physical storage space.
 16. The computer program product of claim 13, wherein, in response to the thin provisioning storage pool being shrunk to be less than a pre-defined threshold, the program instructions comprise instructions for performing at least one of the following: refusing a shrinking request; and prompting a user to delete data in the file system.
 17. The computer program product of claim 13, wherein the program instructions comprise instructions for creating a plurality of storage volumes for the mapping according to the thin provisioning storage pool.
 18. The computer program product of claim 17, wherein a total capacity of the plurality of storage volumes is equal to a maximum capacity of the thin provisioning storage pool. 